/*
    Copyright (c) Guangzhou Data Control Network Technology Co., Ltd. All rights reserved.
    Licensed under the MIT License.
    contact:dcdev_founder@foxmail.com
*/
// 删除url中的code参数
function delUrlParam(url, param) {
    array = url.split("?")
    // 有参数
    if (array.length > 1) {
        param_array = array[1].split("&");
        for (let index = param_array.length - 1; index > -1; index--) {
            // 发现相关参数
            if (param_array[index].indexOf(param + "=") == 0) {
                param_array.splice(index, 1);
            }
        }
        // 已经没有参数
        if (param_array.length == 0) {
            return array[0];
        }
        // 拼接剩余参数 
        else {
            return array[0] + "?" + param_array.join("&");
        }
    }
    // 没有参数则直接返回
    else {
        return url;
    }
}

function showMenuItems() {
    wx.showMenuItems({
        menuList: [
            "menuItem:share:timeline", //分享到朋友圈
            "menuItem:share:appMessage", //发送给朋友
            "menuItem:share:qq", //分享到QQ
            "menuItem:share:QZone" //分享到QQ空间
        ] // 要显示的菜单项，只能隐藏“传播类”和“保护类”按钮
    });
}

function hideMenuItems() {
    wx.hideMenuItems({
        menuList: [
            "menuItem:share:timeline", //分享到朋友圈
            "menuItem:share:appMessage", //发送给朋友
            "menuItem:share:qq", //分享到QQ
            "menuItem:share:QZone" //分享到QQ空间
        ] // 要隐藏的菜单项，只能隐藏“传播类”和“保护类”按钮
    });
}

url = site_config.api_host + "lib/lib_of_back_end/v1.0.1/api/tencent/mp/mp_get_jssdk_config.php";
data = {
    "url": location.href,
    "pid": site_config.pid
};
$.ajax({
    method: "post", dataType: "json",
    url: url,
    data: {
        params: JSON.stringify(data)
    },
    success: function (res) {
        if (res.res == 1) {
            //分享
            wx.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                appId: res.data.appid, // 必填，公众号的唯一标识
                timestamp: res.data.timestamp, // 必填，生成签名的时间戳
                nonceStr: res.data.nonceStr, // 必填，生成签名的随机串
                signature: res.data.signature, // 必填，签名
                jsApiList: ['checkJsApi',//检测接口权限
                    'updateTimelineShareData',//1.4.0的分享接口，注意：使用新版本的分享功能，一定要在该列表加上对应的老版本功能接口，否则新接口不起作用
                    'updateAppMessageShareData',//1.4.0的分享接口,注意：使用新版本的分享功能，一定要在该列表加上对应的老版本功能接口，否则新接口不起作用
                    'onMenuShareAppMessage',//老版本分享接口。
                    'onMenuShareTimeline'//老版本分享接口。
                ] // 必填，需要使用的JS接口列表
            });
        }
        // 获取token失败
        else {
            // url中不存在uid参数
            if (document.location.href.indexOf('&uid=') == -1 && document.location.href.indexOf('?uid=') == -1) {
                // 不影响分享
            }
            // 存在uid参数
            else {
                // 移除之前的用户uid并重新进入，避免错误使用别人的信息分享
                window.location.href = window.location.href.split("?")[0];
            }
            wxShareReady === undefined ? "" : wxShareReady({ res: 0, desc: "获取分享签名出错." })
        }
    },
})

wx.error(function (res) {
    wxShareReady === undefined ? "" : wxShareReady({ res: 0, desc: JSON.stringify(res) })
})

wx.ready(function () { //需在用户可能点击分享按钮前就先调用
    wxShareReady === undefined ? "" : wxShareReady({ res: 1 })
})
function setShareData(data, cb) {
    // 设置默认标题
    if (data.friendShareData.title == "" || data.friendShareData.title == null) {
        data.friendShareData.title = document.title;
    }
    if (data.momentShareData.title == "" || data.momentShareData.title == null) {
        data.momentShareData.title = document.title;
    }
    // 设置分享到会话时的默认描述(避免显示为一条链接)
    if (data.friendShareData.desc == "" || data.friendShareData.desc == null) {
        data.friendShareData.desc = " ";
    }
    // 设置分享链接，追加分享标识，用于识别何人从何途径进行，uid表示分享者uid
    if (data.friendShareData.link == "" || data.friendShareData.link == null) {
        // 本身已有参数
        if (location.href.split("?").length == 2) {
            data.friendShareData.link = `${delUrlParam(location.href, "uid")}&uid=${user_info.uid}`;
        }
        // 没有参数
        else {
            data.friendShareData.link = `${delUrlParam(location.href, "uid")}?uid=${user_info.uid}`;
        }
    }
    if (data.momentShareData.link == "" || data.momentShareData.link == null) {
        // 本身已有参数
        if (location.href.split("?").length == 2) {
            data.momentShareData.link = `${delUrlParam(location.href, "uid")}&uid=${user_info.uid}`;
        }
        // 没有参数
        else {
            data.momentShareData.link = `${delUrlParam(location.href, "uid")}?uid=${user_info.uid}`;
        }
    }
    // 设置分享图片
    if (data.friendShareData.imgUrl == "" || data.friendShareData.imgUrl == null) {
        data.friendShareData.imgUrl = "https://res.dcdev.net/dcdev/v1.0.6/assets/images/icon.png";
    }
    if (data.momentShareData.imgUrl == "" || data.momentShareData.imgUrl == null) {
        data.momentShareData.imgUrl = "https://res.dcdev.net/dcdev/v1.0.6/assets/images/icon.png";
    }

    if (browser_info.is_desktop) {
        wx.onMenuShareAppMessage({
            title: data.friendShareData.title, // 分享标题
            desc: data.friendShareData.desc, // 分享描述
            link: data.friendShareData.link, // 分享链接
            imgUrl: data.friendShareData.imgUrl, // 分享图标
            type: '', // 分享类型,music、video或link，不填默认为link
            dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
            success: function () {
                $("#_dc_mask_content_").css("display", "none");
                if (cb) {
                    cb({ res: 1 });
                }
                // 分享后执行的回调函数
            },
            cancel: function () {
                $("#_dc_mask_content_").css("display", "none");
                if (cb) {
                    cb({ res: 0 });
                }
                // 取消分享后执行的回调函数
            }
        })
        if (data.shareTips) {
            if (data.shareTips.show) {
                // 显示分享提示
                loadJs("https://res.dcdev.net/dcdev/v1.0.6/assets/js/show_mask_layer.js",
                    function () {
                        // 如需在分享箭头之外显示更多内容，则可在此插入html
                        mask_content = data.shareTips.mask_content ? data.shareTips.mask_content :
                            `<div style="z-index: 20001;top:100px;left:100px;position: absolute; color: white;"></div>`;
                        init(mask_content);
                    })
            }
        }
    }
    else {
        if (data.shareTips) {
            if (data.shareTips.show) {
                // 显示分享提示
                loadJs("https://res.dcdev.net/dcdev/v1.0.6/assets/js/show_mask_layer.js",
                    function () {
                        // 如需在分享箭头之外显示更多内容，则可在此插入html
                        mask_content = data.shareTips.mask_content ? data.shareTips.mask_content :
                            `<div style="z-index: 20001;top:100px;left:100px;position: absolute; color: white;"></div>`;
                        init(mask_content);
                    })
            }
        }

        // 新版本sdk 1.4.0不再返回分享成功状态
        function success(res) {
        }
        function error(res) {
        }
        data.friendShareData.success = success;
        data.friendShareData.error = error;
        //分享给朋友
        wx.updateAppMessageShareData(data.friendShareData, function (res) {
            // 移动版分享无法隐藏遮罩
            $("#_dc_mask_content_").css("display", "none");
            if (cb) {
                cb({ res: 1 });
            }
        });
        //分享到朋友圈
        wx.updateTimelineShareData(data.momentShareData, function (res) {
            // 移动版分享无法隐藏遮罩
            $("#_dc_mask_content_").css("display", "none");
            if (cb) {
                cb({ res: 1 });
            }
        });
    }
}
